<!DOCTYPE html>
<html lang="zh-CN">
<head><meta name="generator" content="Hexo 3.9.0">

    <!--[if lt IE 9]>
        <style>body {display: none; background: none !important} </style>
        <meta http-equiv="Refresh" Content="0; url=//outdatedbrowser.com/" />
    <![endif]-->

<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta name="format-detection" content="telephone=no">
<meta name="author" content="Ren ZM">



<meta name="description" content="cocos2dx-3.12, schedule">
<meta name="keywords" content="cocos2dx">
<meta property="og:type" content="article">
<meta property="og:title" content="cocos2dx-schedule">
<meta property="og:url" content="https://littlepro.gitee.io/mytpages/2019/11/15/cocos2dx-schedule/index.html">
<meta property="og:site_name" content="Xbiubiubiu">
<meta property="og:description" content="cocos2dx-3.12, schedule">
<meta property="og:locale" content="zh-CN">
<meta property="og:updated_time" content="2019-11-23T05:17:53.034Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="cocos2dx-schedule">
<meta name="twitter:description" content="cocos2dx-3.12, schedule">

<link rel="apple-touch-icon" href="/mytpages//apple-touch-icon.png">


    <link rel="alternate" href="/atom.xml" title="Xbiubiubiu" type="application/atom+xml">



    <link rel="shortcut icon" href="/mytpages//favicon.png">



    <link href="//cdn.bootcss.com/animate.css/3.5.1/animate.min.css" rel="stylesheet">



    <link href="//cdn.bootcss.com/fancybox/2.1.5/jquery.fancybox.min.css" rel="stylesheet">



    <script src="//cdn.bootcss.com/pace/1.0.2/pace.min.js"></script>
    <link href="//cdn.bootcss.com/pace/1.0.2/themes/blue/pace-theme-minimal.css" rel="stylesheet">


<link rel="stylesheet" href="/mytpages/css/style.css">



<link href="//cdn.bootcss.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet">


<title>cocos2dx-schedule | Xbiubiubiu</title>

<script src="//cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
<script src="//cdn.bootcss.com/clipboard.js/1.5.10/clipboard.min.js"></script>

<script>
    var yiliaConfig = {
        fancybox: true,
        animate: true,
        isHome: false,
        isPost: true,
        isArchive: false,
        isTag: false,
        isCategory: false,
        fancybox_js: "//cdn.bootcss.com/fancybox/2.1.5/jquery.fancybox.min.js",
        scrollreveal: "//cdn.bootcss.com/scrollReveal.js/3.1.4/scrollreveal.min.js",
        search: false
    }
</script>


    <script> yiliaConfig.jquery_ui = [false]; </script>



    <script> yiliaConfig.rootUrl = /mytpages/; </script>







    <script src="/mytpages/live2d-widget/autoload.js"></script>


</head></html>
<body>
  <div id="container">
    <div class="left-col">
    <div class="overlay"></div>
<div class="intrude-less">
    <header id="header" class="inner">
        <a href="/mytpages/" class="profilepic">
            <img src="/mytpages//img/avatar.png" class="animated zoomIn">
        </a>
        <hgroup>
          <h1 class="header-author"><a href="/mytpages/">Ren ZM</a></h1>
        </hgroup>

        
        <p class="header-subtitle">--ロリは正義</p>
        

        


        
            <div id="switch-btn" class="switch-btn">
                <div class="icon">
                    <div class="icon-ctn">
                        <div class="icon-wrap icon-house" data-idx="0">
                            <div class="birdhouse"></div>
                            <div class="birdhouse_holes"></div>
                        </div>
                        <div class="icon-wrap icon-ribbon hide" data-idx="1">
                            <div class="ribbon"></div>
                        </div>
                        
                        <div class="icon-wrap icon-link hide" data-idx="2">
                            <div class="loopback_l"></div>
                            <div class="loopback_r"></div>
                        </div>
                        
                        
                        <div class="icon-wrap icon-me hide" data-idx="3">
                            <div class="user"></div>
                            <div class="shoulder"></div>
                        </div>
                        
                    </div>
                    
                </div>
                <div class="tips-box hide">
                    <div class="tips-arrow"></div>
                    <ul class="tips-inner">
                        <li>菜单</li>
                        <li>标签</li>
                        
                        <li>友情链接</li>
                        
                        
                        <li>关于我</li>
                        
                    </ul>
                </div>
            </div>
        

        <div id="switch-area" class="switch-area">
            <div class="switch-wrap">
                <section class="switch-part switch-part1">
                    <nav class="header-menu">
                        <ul>
                        
                            <li><a href="/mytpages//mytpages/../">主页</a></li>
                        
                            <li><a href="/mytpages//mytpages/../archives/">所有文章</a></li>
                        
                            <li><a href="/mytpages//mytpages/../tags/">标签云</a></li>
                        
                            <li><a href="/mytpages//mytpages/../about/">关于我</a></li>
                        
                        </ul>
                    </nav>
                    <nav class="header-nav">
                        <ul class="social">
                            
                                <a class="fa Email" href="mailto:784709355@qq.com" title="Email"></a>
                            
                                <a class="fa GitHub" href="https://github.com/rzzz" title="GitHub"></a>
                            
                                <a class="fa Gitee" href="https://gitee.com/littlepro" title="Gitee"></a>
                            
                                <a class="fa V2EX" href="/mytpages/" title="V2EX"></a>
                            
                                <a class="fa 知乎" href="/mytpages/" title="知乎"></a>
                            
                                <a class="fa 网易云音乐" href="/mytpages/" title="网易云音乐"></a>
                            
                                <a class="fa bilibili" href="/mytpages/" title="bilibili"></a>
                            
                        </ul>
                    </nav>
                </section>
                
                
                <section class="switch-part switch-part2">
                    <div class="widget tagcloud" id="js-tagcloud">
                        <ul class="tag-list"><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/JavaScript/">JavaScript</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/MySql/">MySql</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/NodeJS/">NodeJS</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/Nodejs/">Nodejs</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/PS3/">PS3</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/c/">c</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/c/">c++</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/cocos2dx/">cocos2dx</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/markdown/">markdown</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/note/">note</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/sort/">sort</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/test/">test</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/tool/">tool</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/usage/">usage</a></li></ul>
                    </div>
                </section>
                
                
                
                <section class="switch-part switch-part3">
                    <div id="js-friends">
                    
                      <a class="main-nav-link switch-friends-link" href="https://hexo.io">Hexo</a>
                    
                      <a class="main-nav-link switch-friends-link" href="https://pages.github.com/">GitHub</a>
                    
                      <a class="main-nav-link switch-friends-link" href="http://moxfive.xyz/">MOxFIVE</a>
                    
                    </div>
                </section>
                

                
                
                <section class="switch-part switch-part4">
                
                    <div id="js-aboutme">ロリは正義</div>
                </section>
                
            </div>
        </div>
    </header>                
</div>
    </div>
    <div class="mid-col">
      <nav id="mobile-nav">
      <div class="overlay">
          <div class="slider-trigger"></div>
          <h1 class="header-author js-mobile-header hide"><a href="/" title="回到主页">Ren ZM</a></h1>
      </div>
    <div class="intrude-less">
        <header id="header" class="inner">
            <a href="/mytpages/" class="profilepic">
                <img src="/mytpages//img/avatar.png" class="animated zoomIn">
            </a>
            <hgroup>
              <h1 class="header-author"><a href="/mytpages/" title="回到主页">Ren ZM</a></h1>
            </hgroup>
            
            <p class="header-subtitle">--ロリは正義</p>
            
            <nav class="header-menu">
                <ul>
                
                    <li><a href="/mytpages/../">主页</a></li>
                
                    <li><a href="/mytpages/../archives/">所有文章</a></li>
                
                    <li><a href="/mytpages/../tags/">标签云</a></li>
                
                    <li><a href="/mytpages/../about/">关于我</a></li>
                
                <div class="clearfix"></div>
                </ul>
            </nav>
            <nav class="header-nav">
                        <ul class="social">
                            
                                <a class="fa Email" target="_blank" href="mailto:784709355@qq.com" title="Email"></a>
                            
                                <a class="fa GitHub" target="_blank" href="https://github.com/rzzz" title="GitHub"></a>
                            
                                <a class="fa Gitee" target="_blank" href="https://gitee.com/littlepro" title="Gitee"></a>
                            
                                <a class="fa V2EX" target="_blank" href="/mytpages/" title="V2EX"></a>
                            
                                <a class="fa 知乎" target="_blank" href="/mytpages/" title="知乎"></a>
                            
                                <a class="fa 网易云音乐" target="_blank" href="/mytpages/" title="网易云音乐"></a>
                            
                                <a class="fa bilibili" target="_blank" href="/mytpages/" title="bilibili"></a>
                            
                        </ul>
            </nav>
        </header>                
    </div>
    <link class="menu-list" tags="标签" friends="友情链接" about="关于我"/>
</nav>
      <div class="body-wrap"><article id="post-cocos2dx-schedule" class="article article-type-post" itemscope itemprop="blogPost">
  
    <div class="article-meta">
      <a href="/mytpages/2019/11/15/cocos2dx-schedule/" class="article-date">
      <time datetime="2019-11-15T02:36:42.000Z" itemprop="datePublished">2019-11-15</time>
</a>


    </div>
  
  <div class="article-inner">
    
      <input type="hidden" class="isFancy" />
    
    
      <header class="article-header">
        
  
    <h1 class="article-title" itemprop="name">
      cocos2dx-schedule
    </h1>
  

      </header>
      
      <div class="article-info article-info-post">
        

        
    <div class="article-tag tagcloud">
        <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/mytpages/tags/cocos2dx/">cocos2dx</a></li></ul>
    </div>

        <div class="clearfix"></div>
      </div>
      
    
    <div class="article-entry" itemprop="articleBody">
      
          
        <p>cocos2dx-3.12, schedule</p>
<a id="more"></a>

<p>Timer</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">CC_DLL</span> <span class="title">Timer</span> :</span> <span class="keyword">public</span> Ref</span><br><span class="line">    Scheduler* _scheduler; <span class="comment">// weak ref</span></span><br><span class="line">    <span class="keyword">float</span> _elapsed;</span><br><span class="line">    <span class="keyword">float</span> _delay;</span><br><span class="line">    <span class="keyword">float</span> _interval;</span><br><span class="line">    <span class="keyword">unsigned</span> <span class="keyword">int</span> _repeat; <span class="comment">//0 = once, 1 is 2 x executed</span></span><br><span class="line">    <span class="comment">// method---------------------------------------------</span></span><br><span class="line">    <span class="function"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="title">trigger</span><span class="params">(<span class="keyword">float</span> dt)</span> </span>= <span class="number">0</span>;</span><br><span class="line">    <span class="function"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="title">cancel</span><span class="params">()</span> </span>= <span class="number">0</span>;</span><br><span class="line">    <span class="function"><span class="keyword">void</span> <span class="title">setupTimerWithInterval</span><span class="params">(<span class="keyword">float</span> seconds, <span class="keyword">unsigned</span> <span class="keyword">int</span> repeat, <span class="keyword">float</span> delay)</span></span>;</span><br><span class="line">        _elapsed = <span class="number">-1</span>;</span><br><span class="line">        _interval = seconds;</span><br><span class="line">        _delay = delay;</span><br><span class="line">        _useDelay = (_delay &gt; <span class="number">0.0f</span>) ? <span class="literal">true</span> : <span class="literal">false</span>;</span><br><span class="line">        _repeat = repeat;</span><br><span class="line">    <span class="function"><span class="keyword">void</span> <span class="title">update</span><span class="params">(<span class="keyword">float</span> dt)</span></span>;</span><br><span class="line">        <span class="keyword">if</span> (_elapsed == <span class="number">-1</span>)</span><br><span class="line">            _elapsed = <span class="number">0</span>;</span><br><span class="line">            _timesExecuted = <span class="number">0</span>;</span><br><span class="line">            <span class="keyword">return</span>;</span><br><span class="line">        _elapsed += dt;</span><br><span class="line">        <span class="keyword">if</span> (_useDelay)</span><br><span class="line">            <span class="keyword">if</span> (_elapsed &lt; _delay)</span><br><span class="line">                <span class="keyword">return</span>;</span><br><span class="line">            trigger(_delay);</span><br><span class="line">            _elapsed = _elapsed - _delay;</span><br><span class="line">            _timesExecuted += <span class="number">1</span>;</span><br><span class="line">            _useDelay = <span class="literal">false</span>;</span><br><span class="line">            <span class="keyword">if</span> (!_runForever &amp;&amp; _timesExecuted &gt; _repeat)</span><br><span class="line">                cancel();</span><br><span class="line">                <span class="keyword">return</span>;</span><br><span class="line">        <span class="keyword">float</span> interval = (_interval &gt; <span class="number">0</span>) ? _interval : _elapsed;</span><br><span class="line">        <span class="keyword">while</span> (_elapsed &gt;= interval)</span><br><span class="line">            trigger(interval);</span><br><span class="line">            _elapsed -= interval;</span><br><span class="line">            _timesExecuted += <span class="number">1</span>;</span><br><span class="line">            <span class="keyword">if</span> (!_runForever &amp;&amp; _timesExecuted &gt; _repeat)</span><br><span class="line">                cancel();</span><br><span class="line">                <span class="keyword">break</span>;</span><br><span class="line">            <span class="keyword">if</span> (_elapsed &lt;= <span class="number">0.f</span>)</span><br><span class="line">                <span class="keyword">break</span>;</span><br></pre></td></tr></table></figure>

<p>TimerTargetSelector &amp; TimerTargetCallback</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">typedef</span> <span class="title">void</span> <span class="params">(Ref::*SEL_SCHEDULE)</span><span class="params">(<span class="keyword">float</span>)</span></span>;</span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">CC_DLL</span> <span class="title">TimerTargetSelector</span> :</span> <span class="keyword">public</span> Timer</span><br><span class="line">    Ref* _target;</span><br><span class="line">    SEL_SCHEDULE _selector;</span><br><span class="line">    <span class="function"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="title">trigger</span><span class="params">(<span class="keyword">float</span> dt)</span> override</span>;</span><br><span class="line">        (_target-&gt;*_selector)(dt);</span><br><span class="line">    <span class="function"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="title">cancel</span><span class="params">()</span> override</span>;</span><br><span class="line">        _scheduler-&gt;unschedule(_selector, _target);</span><br><span class="line"></span><br><span class="line"><span class="keyword">typedef</span> <span class="built_in">std</span>::function&lt;<span class="keyword">void</span>(<span class="keyword">float</span>)&gt; ccSchedulerFunc;</span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">CC_DLL</span> <span class="title">TimerTargetCallback</span> :</span> <span class="keyword">public</span> Timer</span><br><span class="line">    <span class="keyword">void</span>* _target;</span><br><span class="line">    ccSchedulerFunc _callback;</span><br><span class="line">    <span class="built_in">std</span>::<span class="built_in">string</span> _key;</span><br><span class="line">    <span class="function"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="title">trigger</span><span class="params">(<span class="keyword">float</span> dt)</span> override</span>;</span><br><span class="line">        _callback(dt);</span><br><span class="line">    <span class="function"><span class="keyword">virtual</span> <span class="keyword">void</span> <span class="title">cancel</span><span class="params">()</span> override</span>;</span><br><span class="line">         _scheduler-&gt;unschedule(_key, _target);</span><br></pre></td></tr></table></figure>

<p>Scheduler</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">struct</span> _<span class="title">listEntry</span>;</span></span><br><span class="line"><span class="class"><span class="keyword">struct</span> _<span class="title">hashSelectorEntry</span>;</span><span class="comment">// tHashTimerEntry</span></span><br><span class="line"><span class="class"><span class="keyword">struct</span> _<span class="title">hashUpdateEntry</span>;</span><span class="comment">// tHashUpdateEntry</span></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">CC_DLL</span> <span class="title">Scheduler</span> :</span> <span class="keyword">public</span> Ref</span><br><span class="line">    <span class="class"><span class="keyword">struct</span> _<span class="title">hashUpdateEntry</span> *_<span class="title">hashForUpdates</span>;</span></span><br><span class="line">    <span class="class"><span class="keyword">struct</span> _<span class="title">hashSelectorEntry</span> *_<span class="title">hashForTimers</span>;</span></span><br><span class="line">    <span class="class"><span class="keyword">struct</span> _<span class="title">hashSelectorEntry</span> *_<span class="title">currentTarget</span>;</span></span><br><span class="line">    <span class="keyword">bool</span> _currentTargetSalvaged;</span><br><span class="line">    <span class="keyword">bool</span> _updateHashLocked;</span><br><span class="line">    <span class="comment">// method-------------------------------------</span></span><br><span class="line">    <span class="function"><span class="keyword">void</span> <span class="title">schedule</span><span class="params">(<span class="keyword">const</span> ccSchedulerFunc&amp; callback, <span class="keyword">void</span> *target, <span class="keyword">float</span> interval, <span class="keyword">unsigned</span> <span class="keyword">int</span> repeat, <span class="keyword">float</span> delay, <span class="keyword">bool</span> paused, <span class="keyword">const</span> <span class="built_in">std</span>::<span class="built_in">string</span>&amp; key)</span></span>;</span><br><span class="line">        tHashTimerEntry *element = <span class="literal">nullptr</span>;</span><br><span class="line">        HASH_FIND_PTR(_hashForTimers, &amp;target, element);</span><br><span class="line">        <span class="keyword">if</span> (! element)</span><br><span class="line">            element = (tHashTimerEntry *)<span class="built_in">calloc</span>(<span class="keyword">sizeof</span>(*element), <span class="number">1</span>);</span><br><span class="line">            element-&gt;target = target;</span><br><span class="line">            HASH_ADD_PTR(_hashForTimers, target, element);</span><br><span class="line">            element-&gt;paused = paused;</span><br><span class="line">        <span class="keyword">else</span></span><br><span class="line">            CCASSERT(element-&gt;paused == paused, <span class="string">"element's paused should be paused!"</span>);</span><br><span class="line">        TimerTargetCallback *timer = <span class="keyword">new</span> (<span class="built_in">std</span>::nothrow) TimerTargetCallback();</span><br><span class="line">        timer-&gt;initWithCallback(<span class="keyword">this</span>, callback, target, key, interval, repeat, delay);</span><br><span class="line">        ccArrayAppendObject(element-&gt;timers, timer);</span><br><span class="line">        timer-&gt;release();</span><br><span class="line">    <span class="function"><span class="keyword">void</span> <span class="title">unschedule</span><span class="params">(<span class="keyword">const</span> <span class="built_in">std</span>::<span class="built_in">string</span>&amp; key, <span class="keyword">void</span> *target)</span></span>;</span><br><span class="line">        tHashTimerEntry *element = <span class="literal">nullptr</span>;</span><br><span class="line">        HASH_FIND_PTR(_hashForTimers, &amp;target, element);</span><br><span class="line">        <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i &lt; element-&gt;timers-&gt;num; ++i)</span><br><span class="line">            TimerTargetCallback *timer = <span class="keyword">dynamic_cast</span>&lt;TimerTargetCallback*&gt;(element-&gt;timers-&gt;arr[i]);</span><br><span class="line">            <span class="keyword">if</span> (timer &amp;&amp; key == timer-&gt;getKey())</span><br><span class="line">                <span class="keyword">if</span> (timer == element-&gt;currentTimer &amp;&amp; (! element-&gt;currentTimerSalvaged))</span><br><span class="line">                    element-&gt;currentTimer-&gt;retain();</span><br><span class="line">                    element-&gt;currentTimerSalvaged = <span class="literal">true</span>;</span><br><span class="line">                ccArrayRemoveObjectAtIndex(element-&gt;timers, i, <span class="literal">true</span>);</span><br><span class="line">                <span class="keyword">if</span> (element-&gt;timerIndex &gt;= i)</span><br><span class="line">                    element-&gt;timerIndex--;</span><br><span class="line">                <span class="keyword">if</span> (element-&gt;timers-&gt;num == <span class="number">0</span>)</span><br><span class="line">                    <span class="keyword">if</span> (_currentTarget == element)</span><br><span class="line">                        _currentTargetSalvaged = <span class="literal">true</span>;</span><br><span class="line">                    <span class="keyword">else</span></span><br><span class="line">                        removeHashElement(element);</span><br><span class="line">                <span class="keyword">return</span>;</span><br><span class="line">    <span class="function"><span class="keyword">void</span> <span class="title">schedule</span><span class="params">(SEL_SCHEDULE selector, Ref *target, <span class="keyword">float</span> interval, <span class="keyword">unsigned</span> <span class="keyword">int</span> repeat, <span class="keyword">float</span> delay, <span class="keyword">bool</span> paused)</span></span>;</span><br><span class="line">        tHashTimerEntry *element = <span class="literal">nullptr</span>;</span><br><span class="line">        HASH_FIND_PTR(_hashForTimers, &amp;target, element);</span><br><span class="line">        <span class="keyword">if</span> (! element)</span><br><span class="line">            element = (tHashTimerEntry *)<span class="built_in">calloc</span>(<span class="keyword">sizeof</span>(*element), <span class="number">1</span>);</span><br><span class="line">            element-&gt;target = target;</span><br><span class="line">            HASH_ADD_PTR(_hashForTimers, target, element);</span><br><span class="line">            element-&gt;paused = paused;</span><br><span class="line">        <span class="keyword">else</span></span><br><span class="line">            CCASSERT(element-&gt;paused == paused, <span class="string">"element's paused should be paused."</span>);</span><br><span class="line">        TimerTargetSelector *timer = <span class="keyword">new</span> (<span class="built_in">std</span>::nothrow) TimerTargetSelector();</span><br><span class="line">        timer-&gt;initWithSelector(<span class="keyword">this</span>, selector, target, interval, repeat, delay);</span><br><span class="line">        ccArrayAppendObject(element-&gt;timers, timer);</span><br><span class="line">        timer-&gt;release();</span><br><span class="line">    <span class="function"><span class="keyword">void</span> <span class="title">unschedule</span><span class="params">(SEL_SCHEDULE selector, Ref *target)</span></span>;</span><br><span class="line">        tHashTimerEntry *element = <span class="literal">nullptr</span>;</span><br><span class="line">        HASH_FIND_PTR(_hashForTimers, &amp;target, element);</span><br><span class="line">        <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i &lt; element-&gt;timers-&gt;num; ++i)</span><br><span class="line">            TimerTargetSelector *timer = <span class="keyword">dynamic_cast</span>&lt;TimerTargetSelector*&gt;(element-&gt;timers-&gt;arr[i]);</span><br><span class="line">            <span class="keyword">if</span> (timer &amp;&amp; selector == timer-&gt;getSelector())</span><br><span class="line">                ccArrayRemoveObjectAtIndex(element-&gt;timers, i, <span class="literal">true</span>);</span><br><span class="line">                ... ? _currentTargetSalvaged = <span class="literal">true</span> : removeHashElement(element);</span><br><span class="line">    <span class="function"><span class="keyword">void</span> <span class="title">scheduleUpdate</span><span class="params">(T *target, <span class="keyword">int</span> priority, <span class="keyword">bool</span> paused)</span></span></span><br><span class="line">        this-&gt;schedulePerFrame([target](float dt)&#123; target-&gt;update(dt); &#125;, target, priority, paused);</span><br><span class="line">    <span class="function"><span class="keyword">void</span> <span class="title">schedulePerFrame</span><span class="params">(<span class="keyword">const</span> ccSchedulerFunc&amp; callback, <span class="keyword">void</span> *target, <span class="keyword">int</span> priority, <span class="keyword">bool</span> paused)</span></span>;</span><br><span class="line">        tHashUpdateEntry *hashElement = <span class="literal">nullptr</span>;</span><br><span class="line">        HASH_FIND_PTR(_hashForUpdates, &amp;target, hashElement);</span><br><span class="line">        <span class="keyword">if</span> (hashElement)</span><br><span class="line">            <span class="comment">// cocos2dx bug: if ((*hashElement-&gt;list)-&gt;priority != priority)</span></span><br><span class="line">            <span class="keyword">if</span> (hashElement-&gt;entry-&gt;priority != priority)</span><br><span class="line">                <span class="keyword">if</span> (_updateHashLocked)</span><br><span class="line">                    CCLOG(<span class="string">"warning: you CANNOT change update priority in scheduled function"</span>);</span><br><span class="line">                    hashElement-&gt;entry-&gt;markedForDeletion = <span class="literal">false</span>;</span><br><span class="line">                    hashElement-&gt;entry-&gt;paused = paused;</span><br><span class="line">                    <span class="keyword">return</span>;</span><br><span class="line">                <span class="keyword">else</span></span><br><span class="line">                    <span class="comment">// will be added again outside if (hashElement).</span></span><br><span class="line">                    unscheduleUpdate(target);</span><br><span class="line">            <span class="keyword">else</span></span><br><span class="line">                hashElement-&gt;entry-&gt;markedForDeletion = <span class="literal">false</span>;</span><br><span class="line">                hashElement-&gt;entry-&gt;paused = paused;</span><br><span class="line">                <span class="keyword">return</span>;</span><br><span class="line">        <span class="keyword">if</span> (priority == <span class="number">0</span>)</span><br><span class="line">            appendIn(&amp;_updates0List, callback, target, paused);</span><br><span class="line">        <span class="keyword">else</span> <span class="keyword">if</span> (priority &lt; <span class="number">0</span>)</span><br><span class="line">            priorityIn(&amp;_updatesNegList, callback, target, priority, paused);</span><br><span class="line">        <span class="keyword">else</span></span><br><span class="line">            priorityIn(&amp;_updatesPosList, callback, target, priority, paused);</span><br><span class="line">    <span class="function"><span class="keyword">void</span> <span class="title">update</span><span class="params">(<span class="keyword">float</span> dt)</span></span>;</span><br><span class="line">        _updateHashLocked = <span class="literal">true</span>;</span><br><span class="line">        <span class="keyword">if</span> (_timeScale != <span class="number">1.0f</span>)</span><br><span class="line">            dt *= _timeScale;</span><br><span class="line"></span><br><span class="line">        <span class="comment">// Iterate over all the Updates' selectors</span></span><br><span class="line">        tListEntry *entry, *tmp;</span><br><span class="line">        DL_FOREACH_SAFE(_updatesNegList, entry, tmp)</span><br><span class="line">            <span class="keyword">if</span> ((! entry-&gt;paused) &amp;&amp; (! entry-&gt;markedForDeletion))</span><br><span class="line">                entry-&gt;callback(dt);</span><br><span class="line"></span><br><span class="line">        <span class="comment">// Iterate over all the custom selectors</span></span><br><span class="line">        <span class="keyword">for</span> (tHashTimerEntry *elt = _hashForTimers; elt != <span class="literal">nullptr</span>; )</span><br><span class="line">            _currentTarget = elt;</span><br><span class="line">            _currentTargetSalvaged = <span class="literal">false</span>;</span><br><span class="line">            <span class="keyword">if</span> (! _currentTarget-&gt;paused)</span><br><span class="line">                <span class="keyword">for</span> (elt-&gt;timerIndex = <span class="number">0</span>; elt-&gt;timerIndex &lt; elt-&gt;timers-&gt;num; ++(elt-&gt;timerIndex))</span><br><span class="line">                    elt-&gt;currentTimer = (Timer*)(elt-&gt;timers-&gt;arr[elt-&gt;timerIndex]);</span><br><span class="line">                    elt-&gt;currentTimerSalvaged = <span class="literal">false</span>;</span><br><span class="line">                    elt-&gt;currentTimer-&gt;update(dt);</span><br><span class="line">                    <span class="keyword">if</span> (elt-&gt;currentTimerSalvaged)</span><br><span class="line">                        elt-&gt;currentTimer-&gt;release();</span><br><span class="line">                    elt-&gt;currentTimer = <span class="literal">nullptr</span>;</span><br><span class="line">            <span class="comment">// elt, at this moment, is still valid</span></span><br><span class="line">            elt = (tHashTimerEntry *)elt-&gt;hh.next;</span><br><span class="line">            <span class="keyword">if</span> (_currentTargetSalvaged &amp;&amp; _currentTarget-&gt;timers-&gt;num == <span class="number">0</span>)</span><br><span class="line">                removeHashElement(_currentTarget);</span><br><span class="line"></span><br><span class="line">        <span class="comment">// delete all updates that are marked for deletion</span></span><br><span class="line">        DL_FOREACH_SAFE(_updatesNegList, entry, tmp)</span><br><span class="line">            <span class="keyword">if</span> (entry-&gt;markedForDeletion)</span><br><span class="line">                <span class="keyword">this</span>-&gt;removeUpdateFromHash(entry);</span><br><span class="line"></span><br><span class="line">        _updateHashLocked = <span class="literal">false</span>;</span><br><span class="line">        _currentTarget = <span class="literal">nullptr</span>;</span><br><span class="line"></span><br><span class="line">        <span class="comment">// Functions allocated from another thread</span></span><br><span class="line">        <span class="keyword">if</span>( !_functionsToPerform.empty() ) &#123;</span><br><span class="line">            <span class="comment">// std::mutex _performMutex;</span></span><br><span class="line">            _performMutex.lock();</span><br><span class="line">            <span class="comment">// fixed #4123: Save the callback functions, they must be invoked after '_performMutex.unlock()',</span></span><br><span class="line">            <span class="comment">// otherwise if new functions are added in callback, it will cause thread deadlock.</span></span><br><span class="line">            <span class="keyword">auto</span> temp = _functionsToPerform;</span><br><span class="line">            _functionsToPerform.clear();</span><br><span class="line">            _performMutex.unlock();</span><br><span class="line">            <span class="keyword">for</span>( <span class="keyword">const</span> <span class="keyword">auto</span> &amp;function : temp ) &#123;</span><br><span class="line">                function();</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;</span><br></pre></td></tr></table></figure>

<h3 id="tHashTimerEntry"><a href="#tHashTimerEntry" class="headerlink" title="tHashTimerEntry"></a>tHashTimerEntry</h3><p>for TimerTargetCallback &amp; TimerTargetSelector</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">tHashTimerEntry *element = <span class="literal">nullptr</span>;</span><br><span class="line">HASH_FIND_PTR(_hashForTimers, &amp;target, element);</span><br><span class="line">HASH_ADD_PTR(_hashForTimers, target, element);</span><br><span class="line"></span><br><span class="line"><span class="keyword">void</span> Scheduler::removeHashElement(_hashSelectorEntry *element)</span><br><span class="line">    ccArrayFree(element-&gt;timers);</span><br><span class="line">    HASH_DEL(_hashForTimers, element);</span><br><span class="line">    <span class="built_in">free</span>(element);</span><br></pre></td></tr></table></figure>

<h3 id="tListEntry-with-tHashUpdateEntry"><a href="#tListEntry-with-tHashUpdateEntry" class="headerlink" title="tListEntry with tHashUpdateEntry"></a>tListEntry with tHashUpdateEntry</h3><p>for “updates with priority”</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">tHashUpdateEntry *hashElement = <span class="literal">nullptr</span>;</span><br><span class="line">HASH_FIND_PTR(_hashForUpdates, &amp;target, hashElement);</span><br><span class="line"></span><br><span class="line"><span class="comment">//struct _listEntry *_updates0List;</span></span><br><span class="line">tListEntry *listElement = <span class="keyword">new</span> (<span class="built_in">std</span>::nothrow) tListEntry();</span><br><span class="line">DL_APPEND(*<span class="built_in">list</span>, listElement);</span><br><span class="line"></span><br><span class="line"><span class="comment">// update hash entry for quicker access</span></span><br><span class="line">tHashUpdateEntry *hashElement = (tHashUpdateEntry *)<span class="built_in">calloc</span>(<span class="keyword">sizeof</span>(*hashElement), <span class="number">1</span>);</span><br><span class="line">hashElement-&gt;target = target;</span><br><span class="line">hashElement-&gt;<span class="built_in">list</span> = <span class="built_in">list</span>;</span><br><span class="line">hashElement-&gt;entry = listElement;</span><br><span class="line">HASH_ADD_PTR(_hashForUpdates, target, hashElement);</span><br><span class="line"></span><br><span class="line"><span class="keyword">void</span> Scheduler::removeUpdateFromHash(struct _listEntry *entry)</span><br><span class="line">    tHashUpdateEntry *element = <span class="literal">nullptr</span>;</span><br><span class="line">    HASH_FIND_PTR(_hashForUpdates, &amp;entry-&gt;target, element);</span><br><span class="line">    DL_DELETE(*element-&gt;<span class="built_in">list</span>, element-&gt;entry);</span><br><span class="line">    CC_SAFE_DELETE(element-&gt;entry);</span><br><span class="line">    HASH_DEL(_hashForUpdates, element);</span><br><span class="line">    <span class="built_in">free</span>(element);</span><br></pre></td></tr></table></figure>


      
    </div>
    
  </div>
  
    


    <nav id="article-nav">
        
            <div id="article-nav-newer" class="article-nav-title">
                <a href="/mytpages/2019/11/15/cocos2dx-action/">
                    cocos2dx-action
                </a>
            </div>
        
        
            <div id="article-nav-older" class="article-nav-title">
                <a href="/mytpages/2019/11/14/cocos2dx在win32上写日志文件/">
                    cocos2dx在win32上写日志文件
                </a>
            </div>
        
    </nav>

  
</article>

    <div id="toc" class="toc-article">
        <strong class="toc-title">文章目录</strong>
        
            <ol class="toc"><li class="toc-item toc-level-3"><a class="toc-link" href="#tHashTimerEntry"><span class="toc-number">1.</span> <span class="toc-text">tHashTimerEntry</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#tListEntry-with-tHashUpdateEntry"><span class="toc-number">2.</span> <span class="toc-text">tListEntry with tHashUpdateEntry</span></a></li></ol>
        
    </div>
    <style>
        .left-col .switch-btn,
        .left-col .switch-area {
            display: none;
        }
        .toc-level-3 i,
        .toc-level-3 ol {
            display: none !important;
        }
    </style>

    <input type="button" id="tocButton" value="隐藏目录"  title="点击按钮隐藏或者显示文章目录">

    <script>
        yiliaConfig.toc = ["隐藏目录", "显示目录", !!"false"];
    </script>



    
<div class="share">
    
        <div class="bdsharebuttonbox">
            <a href="#" class="fa fa-twitter bds_twi" data-cmd="twi" title="分享到推特"></a>
            <a href="#" class="fa fa-weibo bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a>
            <a href="#" class="fa fa-qq bds_sqq" data-cmd="sqq" title="分享给 QQ 好友"></a>
            <a href="#" class="fa fa-files-o bds_copy" data-cmd="copy" title="复制网址"></a>
            <a href="#" class="fa fa fa-envelope-o bds_mail" data-cmd="mail" title="通过邮件分享"></a>
            <a href="#" class="fa fa-weixin bds_weixin" data-cmd="weixin" title="生成文章二维码"></a>
            <a href="#" class="fa fa-share-alt bds_more" data-cmd="more"></i></a>
        </div>
        <script>
            window._bd_share_config={
                "common":{"bdSnsKey":{},"bdText":"cocos2dx-schedule　| Xbiubiubiu　","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"24"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
        </script>
    

    
</div>







    




    <div class="scroll" id="post-nav-button">
        
            <a href="/mytpages/2019/11/15/cocos2dx-action/" title="上一篇: cocos2dx-action">
                <i class="fa fa-angle-left"></i>
            </a>
        

        <a title="文章列表"><i class="fa fa-bars"></i><i class="fa fa-times"></i></a>

        
            <a href="/mytpages/2019/11/14/cocos2dx在win32上写日志文件/" title="下一篇: cocos2dx在win32上写日志文件">
                <i class="fa fa-angle-right"></i>
            </a>
        
    </div>

    <ul class="post-list"><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/12/13/cpp：allocator-new/">cpp：allocator,new</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/28/CPP标准库-note/">CPP标准库-note</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/27/C与win32API/">C与win32API</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/27/C标准库-note/">C标准库</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/26/cpp的lib和dll/">cpp的lib和dll</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/25/编译cpp-vs2015/">编译cpp-vs2015</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/23/编译cpp-准备/">编译c++准备</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/18/simple-opengl/">simple opengl</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/15/cocos2dx-action/">cocos2dx-action</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/15/cocos2dx-schedule/">cocos2dx-schedule</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/14/cocos2dx在win32上写日志文件/">cocos2dx在win32上写日志文件</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/14/cocos2dx在win32上播放ogg/">cocos2dx在win32上播放ogg</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/14/cocos2dx字库缺失文字处理/">cocos2dx字库缺失文字处理</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/14/cocos2dx工作目录修改/">cocos2dx工作目录修改</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/13/cocos2dx-android/">cocos2dx-android</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/12/cocos2dx-win32/">cocos2dx-win32</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/11/Sublimer-Text/">Sublimer Text</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/07/潜意识？？设计模式/">潜意识？？设计模式</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/04/BST？AVL？红黑树？/">BST？AVL？红黑树？</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/01/几种排序算法示例代码/">几种排序算法示例代码</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/10/31/引子-基础算法？？/">引子-基础算法？？</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/10/31/引子-数据结构？？/">引子-数据结构？？</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/10/25/不会懂分布式系统的/">不会懂分布式系统的</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/10/24/MySql简单使用-adv/">MySql简单使用-adv</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/10/24/MySql简单使用/">MySql简单使用</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/10/18/PS3-HEN破相关记录/">PS3-HEN破相关记录</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/10/09/测试使用云函数扩展码云page/">测试使用云函数扩展码云page</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/10/09/web3-单页Web应用/">web3.单页Web应用</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/29/web2-简单网站的前后端分离/">web2.简单网站的前后端分离</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/29/web1-创建一个简单的网站/">web1.创建一个简单的网站</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/27/NodeJS-简单使用/">NodeJS 简单使用</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/27/JavaScript-other/">JavaScript-other</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/27/JavaScript-模块/">JavaScript-模块</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/27/JavaScript-简单使用/">JavaScript 简单使用</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/27/github-gitee-chrome文件树插件/">github & gitee chrome文件树插件</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/26/markdown-简单使用/">markdown 简单使用示例</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/25/hello-world/">Hello World</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/24/zzTest-article0/">zzTest article0</a></li></ul>




    <script>
        
    </script>
</div>
      <footer id="footer">
    <div class="outer">
        <div id="footer-info">
            <div class="footer-left">
                <i class="fa fa-copyright"></i> 
                2019-2020 Ren ZM
            </div>
            <div class="footer-right">
                <a href="http://hexo.io/" target="_blank" title="快速、简洁且高效的博客框架">Hexo</a>  Theme <a href="https://github.com/MOxFIVE/hexo-theme-yelee" target="_blank" title="简而不减 Hexo 双栏博客主题  v3.5">Yelee</a> by MOxFIVE <i class="fa fa-heart animated infinite pulse"></i>
            </div>
        </div>
        
            <div class="visit">
                
                    <span id="busuanzi_container_site_pv" style='display:none'>
                        <span id="site-visit" title="本站到访数"><i class="fa fa-user" aria-hidden="true"></i><span id="busuanzi_value_site_uv"></span>
                        </span>
                    </span>
                
                
                    <span>| </span>
                
                
                    <span id="busuanzi_container_page_pv" style='display:none'>
                        <span id="page-visit"  title="本页阅读量"><i class="fa fa-eye animated infinite pulse" aria-hidden="true"></i><span id="busuanzi_value_page_pv"></span>
                        </span>
                    </span>
                
            </div>
        
    </div>
</footer>
    </div>
    
<script data-main="/mytpages/js/main.js" src="//cdn.bootcss.com/require.js/2.2.0/require.min.js"></script>

    <script>
        $(document).ready(function() {
            var iPad = window.navigator.userAgent.indexOf('iPad');
            if (iPad > -1 || $(".left-col").css("display") === "none") {
                var bgColorList = ["#9db3f4", "#414141", "#e5a859", "#f5dfc6", "#c084a0", "#847e72", "#cd8390", "#996731"];
                var bgColor = Math.ceil(Math.random() * (bgColorList.length - 1));
                $("body").css({"background-color": bgColorList[bgColor], "background-size": "cover"});
            }
            else {
                var backgroundnum = 5;
                var backgroundimg = "url(/mytpages//background/bg-x.jpg)".replace(/x/gi, Math.ceil(Math.random() * backgroundnum));
                $("body").css({"background": backgroundimg, "background-attachment": "fixed", "background-size": "cover"});
            }
        })
    </script>





<div class="scroll" id="scroll">
    <a href="#" title="返回顶部"><i class="fa fa-arrow-up"></i></a>
    <a href="#comments" onclick="load$hide();" title="查看评论"><i class="fa fa-comments-o"></i></a>
    <a href="#footer" title="转到底部"><i class="fa fa-arrow-down"></i></a>
</div>
<script>
    // Open in New Window
    
        var oOpenInNew = {
            
            
            
            
            
            
             archives: ".archive-article-title", 
             miniArchives: "a.post-list-link", 
            
             friends: "#js-friends a", 
             socail: ".social a" 
        }
        for (var x in oOpenInNew) {
            $(oOpenInNew[x]).attr("target", "_blank");
        }
    
</script>

<script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js">
</script>
  </div>
</body>
</html>